Users typically interact with a computer system by using an application. An application is a set of instructions that controls the processing of data in accordance with pre-determined rules and in conjunction with interactions by the user. There are countless such applications currently being used, such as accounting applications, sales applications, etc.
There are numerous considerations to be made by a user when determining the desirability of deploying and using an application. One important consideration is the ease of distribution. Unless an application already resides on the computing device of a user, the application needs to be delivered to the user. Some of the ways that an application are currently delivered to a user is via CD-ROM (whereby the user installs the application software on the computing device), or via Internet (whereby the user interacts with a user interface which is supported by server software).
One factor which effects the case with which applications may be delivered to a user is the application's accessibility. An application should be globally accessible, e.g. —it should be accessible from any location, to any computer connected to a global network or to the internet. Another important consideration is the ease with which the application may be updated, e.g. —to a new version having new or improved features.
Another important consideration to be made by a user when determining the desirability of using an application is the functional richness of the application. The typical user of an application demands a high level of functionality, irrespective of the complexity that is required by the software manufacturer to accomplish this level of functionality. This is evident by the increasing number of features which are being implemented in new software applications. However, these increasingly complex software applications are difficult to develop, take a long time to bring to market, and require highly skilled technologists to develop. Of course, applications must also be compatible with the “corporate reality” of network bandwidth constraints, protocol choices, firewalls, language bathers, etc.
Several methods are currently being employed in order to create and deliver applications to a user. However, each of these methods fail to satisfy all of the above-stated criteria. For instance, one such method is the employment of JAVA™ applets. A JAVA applet can add additional features to a web browser. Examples include user interface elements for collecting data, drawing simple diagrams, and performing calculations. However, JAVA applets, although designed for use over the internet, are frequently difficult to distribute and use owing to non-uniformity of JAVA implementations in web browsers. They also tend to be large in size, requiring significant network bandwidth. In addition, they do not provide adequate functional richness (while they provide a variety of features, they don't approximate the quality or usability of traditional Windows interfaces), and they are difficult to develop since the programming is difficult to learn and thus programmers are expensive and tough to hire. In addition, JAVA applets are frequently incompatible with corporate reality because of their excessive network bandwidth requirements, are often unreliable, are complex to develop and frequently require special configuration.
Another method is the employment of CITRIX™′. CITRIX allows a user to see the Windows interface of a remote computer. When, for example, the user moves the mouse pointer, he is actually moving the mouse pointer of the remote computer at the same time as he moves his own. CITRIX provides a higher level of functional richness since applications look identical to locally installed software. Applications deployed using CITRIX are also somewhat easier to develop than JAVA applets. However, CITRIX based applications are completely unsuitable for wide spread distribution or use over the internet. They require a large amount of bandwidth, create security concerns since they require modification to a network firewall to run, and do not scale well since they tend to quickly consume all of the processing power of their host computer.
Still another method is the employment of Visual Basic™ and other equivalent application development tools. VB is a programming language that can be used to create almost any type of Windows application. These types of applications must be locally installed. Like CITRIX, Visual Basic applications provide a higher level of functional richness. VB is intended to be, and can be, used by relatively lower-skilled programmers. However, Visual Basic based applications are very difficult to distribute. These applications cannot be delivered on the fly, over the internet for example. Their installation requires that a user have disks or CD-roms containing the application. Distribution and updates to a wide audience therefore requires significant resources making them highly impractical for many applications.
One of the best and most popular methods currently being employed to deliver applications to a user is hyper-text mark-up language (referred to hereinafter as “HTML”). Applications created using HTML are easily distributed to users via the Internet. Furthermore, HTML is relatively easy to develop. In fact, one of the reasons for the explosive growth of the Internet is that HTML is readily understandable by a lay person—a person with virtually no knowledge of computer programming could use HTML to create a website.
Unlike the simple webpages of a layperson′ web site, however, which typically just delivers content to a user, more complex web sites deliver the user interface of a client server application, with access to a client server's database system. Thus, a web site not only provides a user with a web page which describes a new product for sale, but also provides a user with interface items so that the user can interactively communicate with the host server. For example, the web site may provide a user with a button that the user presses so as to place an order for the new product, data entry fields in which the user may enter his or her name, a credit card number, a billing or shipping address, etc. Alternately, the web site may provide the user with a button that the user presses in order to enter a review of the product, and further provides to the user space to enter comments about the product's quality, to rate the quality of the product, to read comments or rating that others have entered with respect to the same product, etc.
Though easy to develop and distribute, HTML does not provide a high level of functional richness. For one thing, the sophistication of the user interface is hampered by the limited choice of user interface controls. HTML applications have very few user interface controls, such as “forward”, “back”, “stop”, etc. By contrast, Windows applications have dozens, and sometimes hundreds, of different controls, enabling a user to perform a myriad of different functions.
Furthermore, HTML is not suitable for highly interactive applications because it is a document centric model, e.g.: it delivers whole documents to a user. In order to change the user interface which is displayed to the user, the server delivers a new set of HTML which is employed to re-display the entire interface which is seen by the user. Likewise, in order to process data entered by a user in a field of the interface, the server is required to process the entire set of HTML associated with the interface.
Thus, there is a need for an improved system and method for creating and delivering applications and graphical user interfaces to a user.